1
Mappage entre matériel et logiciel : versions des capacités de calcul
AI021Lesson 5
00:00

La capacité de calcul (CC) agit comme un pont de gestion des versions entre architecture virtuelle (PTX) et architecture réelle (SASS/Binaire). Les développeurs utilisent nvcc pour cibler des plateformes spécifiques, allant des plateformes de bureau/serveur aux plateformes embarquées, selon des modèles de système d'exploitation comme Linux 64 bits (LP64) ou Windows 64 bits (LLP64).

1. Architecture virtuelle vs. architecture réelle

L'outil CUDA prend en charge les architectures GPU des deux dernières versions majeures, référencées dans Tableau 29 : Prise en charge des fonctionnalités selon les capacités de calcul (7.5 à 12.x). Nous définissons les mappages à l'aide de drapeaux comme : nvcc --generate-code arch=compute_80,code=sm_90 prog.cu. Pour les cibles orientées vers l'avenir, les drapeaux comme nvcc -arch=sm_100 ou des variantes spécialisées comme nvcc -arch=sm_100a sont utilisés.

2. La hiérarchie des macros

Le compilateur utilise __CUDA_ARCH__ pour effectuer des branchements dans le code. La macro __CUDA_ARCH__ n'est définie que dans le code périphérique (par exemple, __device__, __global__). Un contrôle plus précis est fourni par __CUDA_ARCH_SPECIFIC__ et __CUDA_ARCH_FAMILY_SPECIFIC__. Certaines fonctionnalités, comme mémoire partagée distribuée ou des charges utiles NaN, nécessitent une capacité de calcul 9.0+ ou une capacité de calcul 10.0 et ultérieure.

3. Limites et contraintes numériques

La précision varie selon la CC ; par exemple, le traitement des nombres sous-normaux garantit que $2^{-16382} \approx 3.36 \cdot 10^{-4932}$. Les limites matérielles telles que CUDA_DEVICE_MAX_COPY_CONNECTIONS=16 ou la directive .maxnreg directive PTX sont strictement appliquées selon la version CC cible.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>